package com.nit.lab.vote.service.vote;
import com.nit.lab.vote.dto.basic.UserDTO;
import com.nit.lab.vote.dto.utils.OpResultDTO;
import com.nit.lab.vote.dto.utils.PasswordDTO;
import com.nit.lab.vote.dto.utils.TableReqDTO;
import com.nit.lab.vote.dto.utils.TableRspDTO;
import com.nit.lab.vote.dto.vote.CPDTO;
import com.nit.lab.vote.dto.vote.ProjectDTO;
import com.nit.lab.vote.dto.vote.UPDTO;

import java.util.List;

public interface ProjectService {
    /**
     * @Description: 管理员获取所有项目列表
     * @Date: 12/11
     */
    TableRspDTO listAll(TableReqDTO tableReqDTO) throws Exception;
    /**
     * @Description: 评审获取参与项目列表
     * @Date: 12/11
     */
    TableRspDTO listUserProject(Long userId, TableReqDTO tableReqDTO) throws Exception;

    /**
     * @Description: 添加项目
     * @Date: 12/12
     */
    OpResultDTO addProject(String sponsor, ProjectDTO projectDTO) throws Exception;
    OpResultDTO deleteProject(ProjectDTO projectDTO) throws Exception;
    OpResultDTO updateProject(ProjectDTO projectDTO) throws Exception;


    /**
     * @Description: 更新状态
     * @Date: 12/11
     */
    OpResultDTO update(ProjectDTO projectDTO) throws Exception;

    /**
     * @Description: 根据project获取评委
     * @Date: 12/11
     */
    TableRspDTO listByProject(TableReqDTO tableReqDTO) throws Exception;

    TableRspDTO queryAllProject(TableReqDTO tableReqDTO) throws Exception;


    /**
     * @Description: 根据project删除评委
     * @Date: 12/11
     */
    OpResultDTO removeUserProject(UPDTO upDTO) throws Exception;

    /**
     * @Description: 为项目添加评委
     * @Date: 2020/12/12
     */
    OpResultDTO addByProject(UPDTO upDTO) throws Exception;

    List<PasswordDTO> listAllProject4Download(TableReqDTO tableRepDTO)throws Exception;
}
